#!/bin/bash
# author: yuchuan.zeng@hand-china.com
# date:2019年7月4日
# description: commit前校验checkStyle，若失败则不允许提交

# 读取git本次commit的java文件名,并且排除了db和dto
files=$(git diff --cached --name-only|grep '.java'|grep -v 'db\|dto\|test\|controller')

# 若没有文件，则不用检查
len=${#files}
if [ $len -eq 0 ]
then
 exit 0
fi

echo '===================  begin checkStyle check ====================='
echo

# 命令（指定编码格式解决乱码问题）
commond='java -Dfile.encoding=utf-8 -jar ./checkstyle/checkstyle-8.11-all.jar -c ./checkstyle/lightkit-checkstyle.xml'
# 拼接需要检查的文件到命令中
for file in ${files[@]}
do
	commond=$commond" "$file
done

# 执行命令并获得结果
result=$($commond)
# 输出结果
echo "$result"

echo
echo '====================  end checkStyle check ======================'

# 若结果中有'[ERROR]'则终止commit
errorString='[ERROR]'
if [[ $result =~ $errorString ]]
then
  exit 1
else
  exit 0
fi